import 'package:flutter/services.dart';

class NumberInputFormatter extends TextInputFormatter {
  final int length;

  NumberInputFormatter({required this.length});

  @override
  TextEditingValue formatEditUpdate(
      TextEditingValue oldValue,
      TextEditingValue newValue,
      ) {
    var text = newValue.text;

    // 允许空值
    if (text.isEmpty) {
      return newValue;
    }

    // 保留纯数字
    text = text.replaceAll(RegExp(r'[^\d]'), '');

    // 去掉多余前导 0，但保留单个 "0"
    if (text.length > 1 && text.startsWith('0')) {
      text = text.replaceFirst(RegExp(r'^0+'), '');
      // 如果去掉后全空，说明原本是多个 0，例如 "00"，保留一个 0
      if (text.isEmpty) text = '0';
    }

    // 长度限制
    if (text.length > length) {
      text = text.substring(0, length);
    }

    return TextEditingValue(
      text: text,
      selection: TextSelection.collapsed(offset: text.length),
    );
  }
}
